const log4js = require('log4js');
// 将自定义的日志级别与log4js模块中的相应级别进行映射
const levels = {
    trace: log4js.levels.TRACE,
    debug: log4js.levels.DEBUG,
    info: log4js.levels.INFO,
    warn: log4js.levels.WARN,
    error: log4js.levels.ERROR,
    fatal: log4js.levels.FATAL
};
// 对log4js进行配置
log4js.configure({
    appenders: {
        // 输出日志到控制台
        console: { type: 'console' },
        // 将info级别的日志输出到info-logs.log文件中
        info: { type: 'file', filename: 'logs/info-logs.log' },
        // 将error级别的日志按日期输出到error-yyyy-MM-dd.log文件中
        error: { 
            type: 'dateFile', 
            filename: 'logs/error', 
            pattern: '-yyyy-MM-dd.log', 
            // 设置文件名称是filename+pattern
            alwaysIncludePattern: true,
        },
    },
    // 定义了不同的日志分类及其配置，不同级别的日志输出到不同的目标文件中
    categories: {
        // 默认分类，将日志输出到控制台，日志级别为debug
        default: { appenders: ['console'], level: 'debug' },
        // 将info级别的日志同时输出到文件和控制台，日志级别为info
        info: { appenders: ['info', 'console'], level: 'info' },
        // 将error级别的日志同时输出到按日期生成的文件和控制台，日志级别为error
        error: { appenders: ['error', 'console'], level: 'error' },
    },
});

// 导出的函数用于记录debug级别的日志
exports.debug = (content) => {
    // 获取名为"debug"的logger实例
    let logger = log4js.getLogger('debug');
    // 设置logger的日志级别为debug
    logger.level = levels.debug;
    // 记录debug级别的日志内容
    logger.debug(content);
}

// 导出的函数用于记录info级别的日志
exports.info = (content) => {
    let logger = log4js.getLogger('info');
    logger.level = levels.info;
    logger.info(content);
}

// 导出的函数用于记录warn级别的日志
exports.warn = (content) => {
    let logger = log4js.getLogger('warn');
    logger.level = levels.warn;
    logger.warn(content);
}

// 导出的函数用于记录error级别的日志
exports.error = (content) => {
    let logger = log4js.getLogger('error');
    logger.level = levels.error;
    logger.error(content);
}

